<?php
require_once( ROOT_DATA_ACCESS_OBJECT . 'DataAccessObject.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');

class DotacaoBO extends DataAccessObject {

	
	function listarDotacoes($instanceDB,$codigoProjeto){
		$sqlQuery = "SELECT * FROM Dotacao WHERE Projeto_codigo = " .$codigoProjeto;
		return $this->execute($instanceDB, $sqlQuery, "SELECT" );
	}
	

	function capturarDotacao($instanceDB, $codigoDotacao){
		
		$sqlQuery = "SELECT * FROM Dotacao WHERE codigo = " .$codigoDotacao;
		return $this->execute( $instanceDB, $sqlQuery, "SELECT" );
	
	}
	

	function inserir( $instanceDB, $dataObject ){
		$codigo = ($this->getMax( $instanceDB, $dataObject->table, "codigo" )+1);
		$dataObject->set("codigo", $codigo);
		$resultado = $this->insert( $instanceDB, $dataObject );
		if ( $resultado ){
			return $this->capturarDotacao( $instanceDB, $dataObject->get("codigo") );
		}
		return FALSE;
	}
	
	function alterar( $instanceDB, $dataObject ){
		return $resultado = $this->update( $instanceDB, $dataObject );
	}
	
	function excluir( $instanceDB, $dataObject ){
		return $this->delete( $instanceDB, $dataObject );
	}	
	
	function calculaSaldoDotacao ($instanceDB, $codigoDotacao){
		
		$entradasDotacao = $this->calculaEntradasDotacao($instanceDB,$codigoDotacao);
		$saidasDotacao = $this->calculaSaidasDotacao($instanceDB,$codigoDotacao);
		$aux = $entradasDotacao - $saidasDotacao;
		//return $entradasDotacao - $saidasDotacao;
		return $aux;
	}
	

	function listaEntradasDotacao ($instanceDB, $codigoDotacao){
		
		$sqlQuery = "SELECT valorOperacao "; 
		$sqlQuery .= "FROM ";
		$sqlQuery .= "MovimentoCaixa ";
		$sqlQuery .= "WHERE ";
		$sqlQuery .= "Dotacao_codigo = ".$codigoDotacao." AND ";
		$sqlQuery .= "tipo = 'C'";
		return $this->execute( $instanceDB, $sqlQuery, "SELECT" );		
	}	

	function calculaEntradasDotacao($instanceDB, $codigoDotacao){
		
		$listaEntradasDotacao = $this->listaEntradasDotacao($instanceDB,$codigoDotacao);
				
		$somatoriaEntradas = 0.0;
		
		for ($i = 0; $i < count($listaEntradasDotacao); $i++){
			
			$somatoriaEntradas += $listaEntradasDotacao[$i]->get("valorOperacao");
		}
		
		return $somatoriaEntradas;		
		
	}

	function listaSaidasDotacao ($instanceDB, $codigoDotacao){
		$sqlQuery = "SELECT valorOperacao "; 
		$sqlQuery .= "FROM ";
		$sqlQuery .= "MovimentoCaixa ";
		$sqlQuery .= "WHERE ";
		$sqlQuery .= "Dotacao_codigo = ".$codigoDotacao." AND ";
		$sqlQuery .= "tipo = 'D'";
		return $this->execute( $instanceDB, $sqlQuery, "SELECT" );			
	}

	function calculaSaidasDotacao($instanceDB, $codigoDotacao){
		
		$listaSaidasDotacao = $this->listaSaidasDotacao($instanceDB,$codigoDotacao);
		
		$somatoriaSaidas = 0.0;
		
		for ($i = 0; $i < count($listaSaidasDotacao); $i++){
			
			$somatoriaSaidas += $listaSaidasDotacao[$i]->get("valorOperacao");
		}
		
		return $somatoriaSaidas;

	}	
	
	function validaExclusao($instanceDB, $codigoDotacao){
		
		$sqlQuery = "SELECT ";
		$sqlQuery .= "COUNT(Dotacao_codigo) AS 'QtdMovimentacoes' ";
		$sqlQuery .= "FROM ";
		$sqlQuery .= "MovimentoCaixa ";
		$sqlQuery .= "WHERE Dotacao_codigo =" . $codigoDotacao;
		return $this->execute( $instanceDB, $sqlQuery, "SELECT" );		
				
	}
	
	
}
?>
